# -*- coding: utf-8 -*-
import scrapy
from yangguang.items import YangguangItem

class YgSpider(scrapy.Spider):
    name = 'yg'
    allowed_domains = ['sun0769.com']
    start_urls = ['http://wz.sun0769.com/index.php/question/questionType?type=4&page=0']    #数据都在这个网址里面；且这个网址不会经过allowed_domains过滤！！！
    count = 0   #控制爬取下一页的次数

    def parse(self, response):
        #分组
        tr_list = response.xpath('//div[@class="greyframe"]/table[2]/tr/td/table//tr')
        for tr in tr_list:
            item = YangguangItem()
            item["title"] = tr.xpath('./td[2]/a[@class="news14"]/text()').extract_first()
            item["href"] = tr.xpath('./td[2]/a[@class="news14"]/@href').extract_first()
            item["place"] = tr.xpath('./td[2]/a[@class="t12h"]/text()').extract_first()
            item["publish_date"] = tr.xpath('./td[last()]/text()').extract_first()

            yield scrapy.Request(
                url=item["href"],
                callback=self.parse_detail,  #结尾不能打括号，打括号就直接调用了
                meta={"key(item)":item}
            )

        #翻页(通过文本定位)
        next_url = response.xpath('//a[text()=">"]/@href').extract_first()
        print("下一页网址：" + next_url)
        if self.count<2:
            if next_url is not None:
                yield scrapy.Request(
                    url=next_url,
                    callback=self.parse
                )
        self.count += 1

    def parse_detail(self,response):
        item = response.meta["key(item)"]
        item["content"] = response.xpath('//div[@class="wzy1"]//tr[1]/td[@class="txt16_3"]//text()').extract() #注意：这里是“//text(”，不是“/text()”
        #错：item["content"] = response.xpath('//div[@class="wzy1"]/tr[1]/td[@class="txt16_3"]//text()').extract() #注意：这里是“//text(”，不是“/text()”——少写一个“/”，因为tr时div的孙节点
        #content中的空格问题，交给pipeline处理
        item["content_img"] = response.xpath('//td[@class="txt16_3"]//img/@src').extract()   #注意：这里是“//img”，不是“/img”——不是直接的子节点，而是孙子节点；网址不完整
        #使用列表推导式把网址补充完整
        item["content_img"] = ["http://wz.sun0769.com" + i for i in item["content_img"]]
        # print(item)
        yield item


#Ctrl+B 可以查看属性的源代码